/*=====================================================================================================================
 * 
 * Repository path:     $HeadURL: http://pfsmps.googlecode.com/svn/trunk/src/convertercontrol.c $
 * Last committed:      $Revision: 2 $
 * Last changed by:     $Author: vladislav.gyurov@gmail.com $
 * Last changed date:   $Date: 2013-09-16 20:26:36 +0000 (Mon, 16 Sep 2013) $
 * ID:                  $Id: convertercontrol.c 2 2013-09-16 20:26:36Z vladislav.gyurov@gmail.com $
 *
 *===================================================================================================================*/

/*=====================================================================================================================
 * Body Identification
 *===================================================================================================================*/
#ifdef __ONVERTERCONTROL_C
    #error "!!! FileName ID. It should be Unique !!!"
#else
    #define __ONVERTERCONTROL_C
#endif

/*=====================================================================================================================
 * Included files to resolve specific definitions in this file
 *===================================================================================================================*/
#include "convertercontrol.h"
#include "smpsadc.h"
#include "smpspwm.h"
#include "singleshot.h"


/*=====================================================================================================================
 * Local constants
 *===================================================================================================================*/

/*=====================================================================================================================
 * Local macros
 *===================================================================================================================*/

/*=====================================================================================================================
 * Local types
 *===================================================================================================================*/

/*=====================================================================================================================
 * Local data
 *===================================================================================================================*/

/*=====================================================================================================================
 * Constant Local Data
 *===================================================================================================================*/

/*=====================================================================================================================
 * Constant exported data
 *===================================================================================================================*/

/*=====================================================================================================================
 * Exported Data
 *===================================================================================================================*/

/*=====================================================================================================================
 * Local Functions Prototypes
 *===================================================================================================================*/
void __attribute__((__interrupt__,no_auto_psv)) _ADCP1Interrupt(void);
static inline void PFC_Control(void);
static inline void SMPS_Control(void);

/*=====================================================================================================================
 *
 *                                  E X P O R T E D    F U N C T I O N S
 *
 *===================================================================================================================*/
/*=====================================================================================================================
 * Parameters: void
 *
 * Return: void
 *
 * Description: SMPS ZVT pair 1 (AN2 -> I_SMPS, AN3 -> AC_SENSE) interrupt
 *===================================================================================================================*/
void __attribute__((__interrupt__,no_auto_psv)) _ADCP1Interrupt(void)
{
    /*===================================================================
    ** SMPS control processing
    *===================================================================*/
#if SINGLESHOT_USED == 0
    SMPS_Control();
#else
    SMPS_SingleshotProcess();
#endif

    if(_GetAdcIntFlagPair2() == cTrue)
    {
        /*===================================================================
        ** PFC control processing
        *===================================================================*/
        // PFC pair 2 (AN4 -> I_AC, AN5 -> I_T1) interrupt is pending
        // Process PFC
#if SINGLESHOT_USED == 0
        PFC_Control();
#else
        PFC_SingleshotProcess();
#endif
        ClearSmpsADCIntPair2();
    }

    ClearSmpsADCIntPair1();
}

/*=====================================================================================================================
 *
 *                                     L O C A L    F U N C T I O N S
 *
 *===================================================================================================================*/
/*=====================================================================================================================
 * Parameters: void
 *
 * Return: void
 *
 * Description:
 *===================================================================================================================*/
static inline void SMPS_Control(void)
{
    U16 i = 10;

    PIN_DEBUG_RF1 = 1;
    while(i--){;};
    PIN_DEBUG_RF1 = 0;
}

/*=====================================================================================================================
 * Parameters: void
 *
 * Return: void
 *
 * Description:
 *===================================================================================================================*/
static inline void PFC_Control(void)
{
    U16 j = 10;

    PIN_DEBUG_RE5 = 1;
    while(j--){;};
    PIN_DEBUG_RE5 = 0;

}

